Real-time DVR polling system

ABSTRACT

Techniques for real-time DVR usage and reporting enable using instant message protocol in a DVR environment to obtain real-time DVR usage data and to report data reflecting such usage in real-time. An example of DVR usage data comprises data reflecting that a viewer is viewing a video program which is R-rated. Another example of DVR usage data comprises a viewer entering a password, such as a kids zone password, to exit kids zone operational mode.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority as a continuation of U.S. patentapplication Ser. No. 12/190,519 entitled, “Real-Time DVR Usage andReporting System,” filed Aug. 12, 2008, which is incorporated byreference in its entirety as if fully set forth herein.

FIELD OF TECHNOLOGY

The present invention relates to digital video recorders (“DVRs”). Theinvention relates more specifically to a real-time DVR polling system.

BACKGROUND

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

The introduction of the Digital Video Recorder (DVR) to the consumerworld has revolutionized the way viewers watch and record televisionprograms. DVRs eliminate the complications of VCRs and the need forvideo tapes. DVRs record television programs on a hard drive that iscapable of storing a large number of television programs. Because DVRsare usually box-like in shape, and are often found sitting on top of thetelevision sets to which they are connected, DVRs typically are includedin the broad category of devices now called “set-top boxes.” Much likeVCRs, DVRs receive one or more television signals as input from cablesor satellite dishes, (or, in some cases, unlike VCRs, from broadbandnetwork connections) and also output television signals to a televisionset or other display.

At least one such DVR automatically records several television programsin advance of the time that a user will watch those television programs.After one or more television programs have been recorded and stored on ahard drive, the DVR presents, to the user, through the television set, auser interface that identifies the television programs which currentlyare available for viewing. This user interface comprises a menu thatallows the user to select, using a remote control device for the DVR,one of the currently recorded television programs. In DVRs produced byTiVo Inc., this menu is often called the “now playing” menu.

After a user selects a recorded television program, the DVR plays theselected television program to the user by reading the appropriatedigital recording from the hard drive and sending a corresponding signalto the television set. While the television program is being played tothe user, the DVR also receives signals from the user's remote control.Through the remote control, a user may instruct the DVR to performvarious operations relative to the television program. For example, theuser may instruct the DVR to play the television program backward for adesired period of time (“rewind”). The user may play the televisionprogram forward with greater than usual speed (“fast forward”). The usermay play the television program forward with slower than usual speed.The user may cause the currently displayed video frame of the televisionprogram to be displayed indefinitely (“pause”), or stop the playing ofthe television program entirely. In this manner, the user may temporallytraverse the television program however the user likes.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings and in whichlike reference numerals refer to similar elements and in which:

FIG. 1A is a block diagram illustrating a network with content andservice providers for a DVR, according to an embodiment;

FIG. 1B is a block diagram illustrating a general overview of thecomponents of a Digital Video Recorder (DVR), according to anembodiment;

FIG. 2A is a block diagram illustrating service provider comprising anXMPP server internally, according to an embodiment;

FIG. 2B is a block diagram illustrating XMPP server residing externallyto service provider, according to an embodiment;

FIG. 3A is a flow diagram showing an example DVR/service providersynchronization process flow, according to an embodiment;

FIG. 3B is a flow diagram showing an example DVR/service providersynchronization process flow, according to an embodiment;

FIG. 4 is a schematic diagram showing a real-time DVR usage andreporting module in a service provider server, according to anembodiment;

FIG. 5 illustrates an example of a DVR-presented screen that provides amechanism by which parents can configure a kid zone with pre-set defaultsettings that are directed toward preventing content that is unsuitablefor children of certain age groups, according to an embodiment;

FIG. 6 illustrates an example of a DVR-presented screen that provides amechanism by which a parent can supply a password, according to anembodiment;

FIG. 7 illustrates an example of a DVR-presented screen that explainsthat the DVR has been placed into a kids zone operational mode,according to an embodiment;

FIG. 8 illustrates an example of a DVR-presented screen that includes amenu item whose selection causes the DVR to enter the kids zoneoperational mode, according to an embodiment;

FIG. 9 illustrates an example of a DVR-presented screen that shows onlycontent items that are allowed by the restriction criteria that areassociated with the kids zone, according to an embodiment;

FIG. 10 is a flow diagram of a password detecting and reporting processaccording to an embodiment;

FIG. 11 is a flow diagram of a password detecting and reporting processaccording to an embodiment;

FIG. 12 illustrates an example of a DVR-presented Electronic ProgramGuide (EPG) screen, according to an embodiment;

FIG. 13 a flow diagram of a rating-detecting and reporting process,according to an embodiment;

FIG. 14 a flow diagram of a rating-detecting and reporting process,according to an embodiment; and

FIG. 15 is a block diagram that illustrates a computer system upon whichan embodiment may be implemented.

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

A method and apparatus for real-time DVR usage and reporting isdescribed. In the following description, for the purposes ofexplanation, numerous details are set forth in order to provide athorough understanding of the present invention. It will be apparent,however, that the present invention may be practiced without suchdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention.

Structural Overview

FIG. 1A illustrates a network with content and service providers for aDVR, according to an embodiment. The system comprises DVR 102 which iscommunicatively coupled to network 105 through any communicationinterface, such as an Ethernet interface or wireless communicationsport. The functionality of a DVR is typified in U.S. Pat. No. 6,233,389which is owned by the Applicants and is hereby incorporated byreference. The system also includes service provider server (“serviceprovider”) 104, storage 106 for service provider 104, content provider108, personal computer 110 and portable device 112.

Personal computer 110 may be a personal computing device, such as adesktop computer or laptop computer, and is also coupled to network 105through any communications interface, including wireless. Portabledevice 112 may be any handheld computing device, cellular phone,portable media player, or any other portable device capable ofdisplaying multimedia content and is also coupled to network 105 throughany communications interface, including wireless. DVR 102, personalcomputer 110, and portable device 112 each communicate as client withservice provider server 104 through network 105. In an embodiment, DVR102, personal computer 110, and portable device 112 each communicatewith content provider 110 through network 105. Storage 106 may beinternal to service provider 104 (not shown) or external to serviceprovider 104 as shown.

Network 105 may be implemented by any medium or mechanism that providesfor the exchange of data between devices in the communication system.Examples of network 105 include, without limitation, a network such as aLocal Area Network (LAN), Wide Area Network (WAN), the Internet, one ormore terrestrial, satellite or wireless links, etc. Alternatively oradditionally, any number of devices connected to network 105 may also bedirectly connected to each other through a communications link.

In an embodiment, content provider 108 provides broadcast programcontent to DVR 102 via cable, satellite, terrestrial communication, orother transmission method. Broadcast program content may include anymultimedia content such as: audio, image, or video content. In anembodiment, content provider 108 provides multimedia content, such asany downloadable content, through network 105 to DVR 102, personalcomputer 110, or portable device 112.

In an embodiment, DVR 102 communicates with service provider 104 andstorage 106, which provide program guide data, graphical resources (suchas fonts, pictures, etc.), service information, software,advertisements, event identification data, and other forms of data thatenable DVR 102 to operate independently of service provider 104 tosatisfy user interests.

In an embodiment, content provider 108 may provide, to service provider104, content data or any metadata, including promotional data, icons,web data, and other information. Service provider 104 may then interpretthe metadata and provide the content data metadata to DVR 102, personalcomputer 110, or portable device 112.

Referring to FIG. 1B, in an embodiment, DVR 102 generally comprises oneor more components, signified by signal converter 154, that may be usedto digitize an analog television signal and convert it into a digitaldata stream or accept a digital data stream. An example of the internalstructure and operation of a DVR is further described in U.S. Pat. No.6,233,389.

DVR 102 receives broadcast signals from an antenna, from a cable TVsystem, satellite receiver, etc., via input 152A. Input 152A maycomprise one or more tuning modules that allow one or more signals to bereceived and recorded simultaneously. For example, a TV input streamreceived by input 152A may take the form of a National TelevisionStandards Committee (NTSC) compliant signal or a Phase Alternating Line(PAL) compliant broadcast signal. For another example, a TV input streamreceived by input 152A may take a digital form such as a DigitalSatellite System (DSS) compliant signal, a Digital Broadcast Services(DBS) compliant signal, or an Advanced Television Standards Committee(ATSC) compliant signal. DBS, DSS, and ATSC are based on standardscalled Moving Pictures Experts Group 2 (MPEG-2) and MPEG-2 Transport.MPEG-2 Transport is a standard for formatting the digital data streamfrom the TV source transmitter so that a TV receiver can disassemble theinput stream to find programs in the multiplexed signal.

An MPEG-2 transport multiplex supports multiple programs in the samebroadcast channel with multiple video and audio feeds and private data.Input 152A tunes to a particular program in a channel, extracts aspecified MPEG stream from the channel, and feeds the MPEG stream to therest of the system. Analog TV signals are encoded into a similar MPEGformat using separate video and audio encoders, such that the remainderof the system is unaware of how the signal was obtained. Information maybe modulated into the vertical blanking interval (VBI) of the analog TVsignal in a number of standard ways; for example, the North AmericanBroadcast Teletext Standard (NABTS) may be used to modulate informationonto certain lines of an NTSC signal, which the FCC mandates the use ofa certain other line for closed caption (CC) and extended data services(EDS). Such signals are decoded by input 152A and passed to the othermodules as if the signals had been delivered via an MPEG-2 private datachannel.

Recording module 160 records the incoming data stream by storing thedigital data stream on at least one storage facility, signified bystorage 164A/164B that is designed to retain segments of the digitaldata stream. Storage 164A/164B may be one or more non-volatile storagedevices (e.g., hard disk, solid state drive, USB external hard drive,USB external memory stick, USB external solid state drive, networkaccessible storage device, etc.) that are internal 164A and/or external164B. A signal converter 154 retrieves segments of the data stream,converts the data stream into an analog signal, and then modulates thesignal onto a RF carrier, via output 152B, through which the signal isdelivered to a standard TV set. Output 152B may alternatively deliver adigital signal to a TV set or video monitor. For example, DVR 102 mayutilize a High-Definition Multimedia Interface (HDMI) for sendingdigital signals to a TV via a HDMI cable.

DVR 102 also includes a communication interface 162, through which theDVR 102 communicates with network 105 via Ethernet, wireless network,modem, or other communications standard. Further, DVR 102 may beintegrated into a TV system such that the components described above arehoused in a TV set capable of performing the functions of each componentof DVR 102.

In another embodiment, DVR 102 generally comprises one or morecomponents necessary to receive, record, store, transfer and playbackdigital data signals from one or more sources, such as a PC, a DVR, aservice provider, or content server. DVR 102 can transfer digital datasignals to another DVR or PC. DVR 102 may encode or decode digitalsignals via encoder 156A and decoder 156B into one or more formats forplayback, storage or transfer. According to one embodiment, encoder 156Aproduces MPEG streams. According to another embodiment, encoder 156Aproduces streams that are encoded using a different codec. Decoder 156Bdecodes the streams encoded by encoder 156A or streams that are storedin the format in which the streams were received using an appropriatedecoder. DVR 102 can also encrypt or decrypt digital data signals usingencryptor/decryptor 158 for storage, transfer or playback of the digitaldata signals.

In one embodiment, DVR 102 communicates with service provider 104, whichprovides program guide data, graphical resources such as brand icons andpictures, service information, software programs, advertisements, andother forms of data that enable DVR 102 to operate independently of theservice provider 104 to perform autonomous recording functions.Communication between DVR 102 and service provider 104 may use a securedistribution architecture to transfer data between the DVR 102 and theservice provider 104 such that both the service data and the user'sprivacy are protected.

DVR Synchronization with Service Provider by Polling

An embodiment of DVR synchronization with service provider 104 bypolling may be described with respect to FIG. 1A and FIG. 1B. Storage164A/164B of DVR 102 comprises program guide data, season pass data,wish list data, now playing data, to do data (e.g., what programs arescheduled), suggestions data, etc. Storage 106 of service provider 104also comprises a copy of such data for DVR 102. For example, storage 106comprises one or more databases, which comprise tables that areassociated with DVR 102. As well, storage 106 comprises copies of allother DVR clients (e.g., as data stored in tables associated with eachof the other DVR clients), which service provider 104 supports and withwhich service provider 104 communicates (not shown). DVR 102periodically establishes a Secure Sockets Layer (SSL) connection to andcontacts (“polls”) service provider 104 to initiate synchronizationbetween data stored in storage 164A/164B of DVR 102 and data stored instorage 106 of service provider 104. Synchronization between data storedin storage 164A/164B of DVR 102 and data stored in storage 106 ofservice provider 104 as used herein means causing data stored in storage164A/164B of DVR 102 and data stored in storage 106 to represent thesame content. For example, in an embodiment, DVR 102 contacts serviceprovider 104 via network 105 to synchronize every fifteen minutes. In anembodiment, synchronization is achieved by DVR 102 contacting serviceprovider 104 and sending a subset of local data in storage 164A/164B,e.g., data that reflects updates to the local data stored in storage164A/164B, to service provider 104 that stores the data on storage 106.In another example, a viewer, from the viewer's PC 110, adds a newseason pass for a series, such as The War, to the viewer's collection ofseason passes. In this example, the viewer, from the viewer's PC 110,adds the new season pass for the series by causing PC 110 to send datarelated to adding the season pass to service provider 104, which thenstores the data in the appropriate table(s) associated with the viewer'sDVR 102 in the database on storage 106. When DVR 102 initiatessynchronizing data with service provider 104, data reflecting the newlyadded season pass contained in storage 106 is sent to DVR 102. It shouldbe appreciated that DVR/service provider synchronization is not limitedby which element (e.g., DVR 102 or service provider 104) initiatessynchronization and sends updated data to the receiving element. Forexample, DVR 102 may initiate synchronization or service provider 104may initiate synchronization. As another example, the particular element(e.g., DVR 102 or service provider 104) designated to initiate thesynchronization process may be the result of a business or designdecision.

An example DVR/service provider synchronization process is as follows. Auser is logged onto the internet (e.g., network 105) using personalcomputer 110. For example, the user is navigating the TiVo Central™Online web page and, from the TiVo Central™ Online remote schedulingfacility, schedules a program to record on the user's DVR 102. Themessage to record the program gets sent from the web page interface onpersonal computer 110 to service provider 104. The program informationis added to the database tables associated with the user's DVR 102 byservice provider 104, e.g., on storage 106 comprising data thatrepresents the schedule of programs for user's DVR 102. The next timethat DVR 102 and service provider 104 synchronize data, data reflectingthe schedule with the added program is sent by service provider 104 fromstorage 106 to DVR storage 164A/164B. DVR 102 is thus configured torecord the added program according to the user's request.

Instant Message Protocol

In an embodiment, DVR 102, personal computer 110, portable device 112,or any other appropriately configured device, may communicate withservice provider 104 on network 105 using a secure client-server instantmessage protocol to transfer data between DVR 102, personal computer110, portable device 112, or any other appropriately configured deviceand service provider 104 such that both the service data and the user'sprivacy are protected. In an embodiment, data may be transferred usingsecure client-server instant message communications protocol overnetwork 105 via wired, wireless, or any other communication interface.In an embodiment, DVR 102 receives and sends instant messages throughcommunication interface 162. As an example, on a cell phone, a usermight select a program to be recorded and the request to record theprogram is sent as an instant message to service provider 104. Instantmessage communication between DVR 102, personal computer 110, orportable device 112 and service provider may be described with referenceto FIG. 2A and FIG. 2B. FIG. 2A is a block diagram of service provider104 comprising an Extensible Messaging and Presence Protocol (XMPP)server 202 internally. In an embodiment, XMPP server 202 iscommunicatively connected to network 105 and external to serviceprovider 104, as shown in FIG. 2B. It should be appreciated that in anembodiment, any system configured for instant message communicationsprotocol may be contemplated and that any embodiment described hereinusing XMPP is meant by way of example and is not meant to be limiting.For example AOL Instant Messenger (AIM®), Microsoft's Windows Live,ICQ®, or Short Messaging Services (SMS) are each a system that may beused for instant message communications protocol in accordance with oneor more embodiments. In an embodiment, commands from any of DVR 102,personal computer 110, or portable device 112 are sent via network 105to service provider 104 as instant messages. After receipt of suchinstant messages, service provider 104 updates appropriate databasetables in storage 106 that are associated with the user associated withthe command. As an example, in an embodiment, after receipt of one ormore instant messages containing information relating to a particularupdate to a user's DVR, service provider 104 updates appropriatedatabase objects in central site database 100, as described in thecommonly owned U.S. Pat. No. 6,728,713, titled, “Distributed DatabaseManagement System,” dated Apr. 27, 2004, which is incorporated herein inits entirety as if fully set forth herein. It should be appreciated thatsuch configurations are by way of example only and are not meant to belimiting.

In an embodiment, XMPP is an open source protocol for real-timeextensible instant messaging (IM) over a network as well as presenceinformation, such as used for buddy lists. XMPP is based on openstandards, similar to email. Similar to a user in an open emailenvironment, a user in an open XMPP environment with a domain name and asuitable Internet connection may run an XMPP server and communicatedirectly with users on other XMPP servers. An example client XMPPapplication is Google Talk. Google Talk is a Windows application forVoice over IP and instant messaging, offered by Google®.

An example XMPP message delivery process from UserA to UserB is asfollows. UserA sends a message intended for UserB to UserA's XMPPserver. If UserB is blocked on UserA's server, then the message isdropped. Otherwise, UserA's XMPP server opens a connection to UserB'sXMPP server. An embodiment of the opened connection may includeobtaining authorization and obtaining an encrypted connection. After theconnection is established, UserB's XMPP server checks if UserA isblocked on UserB's XMPP server. If UserA is blocked on UserB's XMPPserver, the message is dropped. In an embodiment, if UserB is notpresently connected to UserB's XMPP server, the message is stored forlater delivery. It should be appreciated that other options apply, suchas dropping the message. In an embodiment, if UserB is presentlyconnected to UserB's XMPP server, the message is delivered to UserB. Itshould be appreciated that in an embodiment, UserA's server and UserB'sserver are the same server. For instance, UserA sends instant messagesto UserB and receives instant messages from UserB by sending messages toand receiving messages from an XMPP server and UserB sends instantmessages to UserA and receives messages from UserA by sending messagesto and receiving messages from the XMPP server.

Further details on example structure and functionality of XMPP may befound in The Internet Society's “Request For Comment” (RFC) documentsRFC3920, “Extensible Messaging and Presence Protocol: Core” and RFC3921,“Extensible Messaging and Presence Protocol: Instant Messaging andPresence.”

Instant Message Synchronization

In an embodiment, DVR 102 is an instant messaging client and hosts aninstant message client application. DVR 102 attempts to maintain aninstant messaging connection with instant message XMPP server 202 at alltimes. Service provider 104 is also an instant messaging client andhosts an instant message client application. As well, service provider104 attempts to maintain an instant messaging connection with instantmessage XMPP server 202 at all times. In an embodiment, DVR 202, XMPPserver 202, and service provider 104 communicate according to openstandard XMPP protocol, e.g., as described above. In an embodiment,service provider 104 comprises related software that enables serviceprovider 104 to communicate with storage 106. It should be appreciatedthat in certain contexts herein, references to service provider 104 isused in the collective sense and is meant to include reference to therelated software that manages storage 106.

An embodiment of instant message synchronization may be described withreference to FIG. 3A. FIG. 3A is a flow diagram showing an exampleDVR/service provider synchronization process flow. This examplesynchronization process flow begins with a user remotely requesting aprogramming event, e.g., to add a program, via service provider 104(Step 302.) For example, PC 110 may request to add a program to theuser's schedule of recordings for DVR 102. For example, through PC 110the user may remotely add a program using TiVo Central™ Online throughservice provider 104. Service provider 104 updates database tables onstorage 106 that are associated with the user's DVR to include theprogram (Step 304.) As well, service provider 104 sends an instantmessage to DVR 102 via XMPP server 202 (Step 306.) It should beappreciated that, in an embodiment, DVR 102 attempts to maintain theconnection to XMPP server 202 at all times, reconnecting automaticallywhenever the connection drops. Similarly, it should be appreciated that,in an embodiment, service provider 104 attempts to maintain theconnection to XMPP server 202 at all times, reconnecting automaticallywhenever the connection drops. In either case, when the connection toXMPP server 202 is not up for any reason, the instant message isdiscarded. In the example, the instant message informs DVR 102 that achange has been made to the database tables that are associated with theuser's DVR in storage 106 and requests that DVR 102 synchronize data instorage 164A/164B with data in storage 106. In an embodiment, thenotification causes DVR 102 to open a new SSL connection with serviceprovider 104 specifically for the synchronization process and to closethe newly opened SSL connection when the synchronization of the relevantdata in storage 106 with data in storage 164A/164B is done (Step 308.)It should be appreciated that certain details in the example are by wayof illustration only and are not meant to be limiting. As an example,while a remote user requests a change via PC 110, the request for changemay be sent from any configurable device, such as portable device 112.

Another embodiment of DVR/service provider synchronization may bedescribed with reference to FIG. 3B. FIG. 3B is a flow diagram showingan example DVR/service provider synchronization process flow that issimilar to FIG. 3A, however with a different last step. As in FIG. 3A,the example synchronization process flow of FIG. 3B begins with a userremotely requesting a programming event, e.g., to add a program, viaservice provider 104 (Step 302.) For example, PC 110 requests theservice to add a program to the user's schedule of recordings for DVR102. For example, through PC 110 the user may remotely add a programusing TiVo Central™ Online through service provider 104. Serviceprovider 104 updates database tables on storage 106 that are associatedwith the user's DVR to include the program (Step 304.) As well, serviceprovider 104 sends an instant message to DVR 102 via XMPP server 202(Step 306.) It should be appreciated that, in an embodiment, DVR 102attempts to maintain the connection to XMPP server 202 at all times,reconnecting automatically whenever the connection drops. Similarly, itshould be appreciated that, in an embodiment, service provider 104attempts to maintain the connection to XMPP server 202 at all times,reconnecting automatically whenever the connection drops. In eithercase, when the connection to XMPP server 202 is not up for any reason,the instant message is discarded. In the example, the instant messageinforms DVR 102 that a change has been made to the database tables thatare associated with the user's DVR in storage 106 and requests that DVR102 synchronize data in storage 164A/164B with data in storage 106.Responsive to the message, DVR 102 uses the already establishedconnection with XMPP server 202 to pass and/or receive thesynchronization data to synchronize data in storage 164A/164B with datain storage 106 (Step 310). It should be appreciated that certain detailsin the example are by way of illustration only and are not meant to belimiting. For instance, while, in the example, a remote user requests achange from PC 110, the request for change may be sent from anyconfigurable device, such as portable device 112.

It should be appreciated that client-server instant message protocol ina DVR environment is not limited to synchronizing schedule-related andrecording-related data. Indeed, any type of data stored in storage 106of service provider 104 may be synchronized with data stored in DVRstorage 164A/164B and any type of data stored in DVR storage 164A/164Bmay be synchronized with data stored in storage 106 of service provider104.

As well, through an instant message connection, data reflecting any typeof activity from any client may be sent to the service provider storageon a real-time basis. The type of and use of such gathered data islimitless. For example, the data may be aggregated and analyzed formarketing or towards providing better customer service. As anotherexample, data gathered for a particular user may be used to initiate acustomized or targeted process for that particular user, and so forth.

Scalability and Robustness

In an embodiment, the DVR attempts to maintain an SSL connection with anXMPP server at all times, reconnecting whenever the connection isdropped. Because the DVR maintains the SSL connection with the XMPPserver, the DVR has the capability to use instant messaging at alltimes, except during those short intervals when the connection istemporarily dropped. For example, the DVR may employ an alreadyestablished connection with the XMPP server to perform thesynchronization with the service provider. Thus, the DVR using theestablished connection to perform synchronization provides scalability.

In another embodiment, one or more XMPP servers are configured not tostore messages that are sent to any of the one or more XMPP servers. Forexample, an XMPP server receives an XMPP message and passes the XMPPmessage on to a recipient, such as the DVR, without using additionalXMPP server resource for storing the message. Because the one or moreXMPP servers may not need to use additional resource to store XMPPmessages, more XMPP server resource may be used at a given time forprocessing more messages, thus providing greater scalability.

In an embodiment, DVR/service provider synchronization via instantmessaging is robust because the DVR and service provider automaticallyreconnect after any connection failures during the synchronizationprocess.

In another embodiment, DVR/service provider synchronization is renderedrobust by a configuration that uses a combination of DVR/serviceprovider synchronization by polling and DVR/service providersynchronization by instant messaging. For example, an administrator mayset DVR/service provider synchronization by polling to operate everytwenty-four hours, while DVR/service provider synchronization by instantmessaging is operable as well. The combination of synchronization bypolling and synchronization by instant messaging renders a robustsynchronization feature. For example, suppose that an XMPP servercrashes at the time that the XMPP server is attempting to send a messageto a DVR, e.g., a request to synchronize, and that the crash causes thesending of the message to fail. In an embodiment, the DVR may be updatedfrom the synchronization by polling process, possibly at a later time.Thus, synchronization is successful and robust even in a case, which maybe rare, when an XMPP message is lost.

Real-Time DVR Usage and Reporting System

In an embodiment, instant message protocol in a DVR environment, such asdescribed above, is used to cause the DVR to respond by sending aninstant message, e.g., to inform a user, such as a parent or employer,when particular activities have been or are being performed on the DVR.For example, a viewer under a certain age who is watching an R-ratedprogram may cause the DVR to send a notification instant message to aparent. As another example, the DVR may send an instant message when theDVR starts to record a particular program or media content, where theinstant message contains an indication of the particular program ormedia content. As well, the DVR may send another instant message whenthe DVR stops recording the particular program or media content. Anotherexample can be illustrated using Kid Zone, a feature described infurther detail below. In this example, entering a Kid Zone password toexit Kid Zone operational mode, e.g., when a child figures out andenters the Kid Zone password, may cause the DVR to notify a parent. Inan embodiment, the DVR on which a particular activity is performed maysend an instant message through the network to another DVR on thenetwork, another server on the network, a PC, a portable device, such asa cell phone, personal digital assistant (PDA), laptop, and so forth.For example, a young person in one room in a house who is viewing aprogram in Kid Zone operation on a particular DVR may enter the Kid Zonepassword to exit Kid Zone. The particular DVR may send a notificationinstant message indicating that the password was or is being entered toa second DVR which resides in another room in the house and on which aparent is viewing a video program. As another example, when a particularactivity has been performed on the DVR, the DVR may send an instantmessage to a database server (e.g., service provider 104) causing thedatabase server to add or update a particular entry in the database thatis associated with the particular activity being performed on the DVR.As well, when a particular activity has been performed on the DVR, theDVR may send an instant message to cause a server to make an entry in alog file that is associated with the particular activity being performedon the DVR. The various applications of real-time DVR usage andreporting are limitless.

In an embodiment, real-time DVR usage and reporting is implemented usingthe instant message connection as transport protocol describedhereinabove (e.g., refer to FIG. 2B) in conjunction with a real-time DVRusage and reporting server, e.g. real-time DVR usage and reportingserver 410 as depicted in FIG. 4. It should be appreciated thatreal-time DVR usage and reporting server 410 is not required to residewithin service provider 104 and could reside anywhere on network 105. Inan example, in response to a particular activity being performed on DVR102, DVR 102, which already has a secure connection to XMPP server 202,sends an instant message through XMPP server 202 that is intended forreal-time DVR usage and reporting server 410. When certain conditionsare met, for example, when DVR usage and reporting server 410 is notblocked from communication with XMPP server 202 and the authenticationand encryption connection between XMPP server 202 and real-time DVRusage and reporting server 410 has already been established, XMPP server202 sends the instant message to real-time DVR usage and reportingserver 410. After receiving the instant message, real-time DVR usage andreporting server 410 may gather data about the particular DVR usage inreal-time and may perform post-processing on the data in accordance withbusiness rules and processes, and so on. It should be appreciated thatcertain details in the example are by way of illustration only and arenot meant to be limiting.

In an embodiment, in response to real-time DVR usage and reportingserver 410 receiving one or more instant messages that a particularactivity is being performed on DVR 102, real-time DVR usage andreporting server 410 may look up a rules association table and may usethe results of the look-up to compute a next step. For example, in anembodiment, a next step may comprise logging the activity in a log fileor making an entry in database where the entry is associated with theparticular activity. As another example, in an embodiment, a next stepmay comprise sending a corresponding notification message in real-timeto another DVR on network 105, to portable device 112, to personalcomputer 110, or to a third party component on network 105. Examples ofnotification message formats are a message to a DVR, an email to anemail account on a personal computer or portable device, an instantmessage to a personal computer, portable device, or DVR, and a textmessage to a personal computer, personal device, or DVR. For example,real-time DVR usage and reporting server 410 may use informational datafrom the instant message and proceed to open a rules file comprising alist of rules real-time DVR usage and reporting server 410 is to follow.For instance, a rule from the list of rules may cause real-time DVRusage and reporting server 410 to send a text message reflecting theparticular DVR usage to a parent's cell phone. For example, the parentmight receive a text message saying, “Your DVR has exited kids zoneoperational mode.” As another example, a rule from the list of rules maycause real-time DVR usage and reporting server 410 to send an instantmessage reflecting the particular DVR usage to a parent's instantmessage application running on the parent's personal computer. Forexample, the parent might receive an instant message saying, “Your DVRis playing a program that is R-rated.” In an embodiment, real-time DVRusage and reporting server 410 may follow instructions from more thanone rule. For example, real-time DVR usage and reporting server 410might send out both a text message to the parent's cell phone and aninstant message to the parent's instant message application on theparent's personal computer, as well as make an entry in a log file. Itshould be appreciated that these examples are for illustrative purposesonly and are not meant to be limiting.

An Example—Entered Password Detection in Real-Time Using Tivo® Kidzone

In an embodiment, a viewer viewing a video program on a TiVo® DVR entersa password to exit TiVo® KidZone and such DVR usage activity isdetected. Upon detecting that a viewer entered a password to exit TiVo®KidZone, a notification is reported, e.g., a notification email messageis sent to the parent's email account.

TiVo® KidZone

Details of TiVo® KidZone are described in the commonly owned U.S. patentapplication Ser. No. 11,713,242, titled, “Customizing DVRFunctionality,” filed Mar. 1, 2007, which is incorporated herein in itsentirety as if fully set forth herein. Techniques of TiVo® KidZoneenable parents to establish a child-protective “kids zone” on a DVR.According to one technique, a DVR receives, from a parent, identities ofcontent items that the parent does not want children to view. The DVRmaps the identities to a kids zone. During times that the DVR is set tooperate in the kids zone operational mode, the DVR prevents itself frompresenting any content items that are associated with the identities.However, during these times, the DVR still may obtain and store thesecontent items. At other times, during which the DVR is not set tooperate in the kids zone operational mode, the DVR may allow itself topresent the content items that are associated with the identities,including content items that the DVR obtained and stored but could notdisplay during times that the DVR was set to operate in the kids zoneoperational mode.

In an embodiment, DVR 102 presents a screen to a viewer (e.g., parent)by which the parent may configure a kid zone with pre-set defaultsettings that are directed toward preventing content that is unsuitablefor children of certain age groups. An example of such DVR-presentedscreen is shown in FIG. 5, on which screen a parent selects an age rangefor the kids zone 500. In the example shown, there is a first menu itemfor “ages under 4 years” 501, a second menu item for “ages 4 to 7 years”502, and a third menu item for “ages 7 to 12 years” 503. After a parenthas selected an age range for the kids zone, DVR 102 requests a newpassword from the parent. FIG. 6 illustrates an example of aDVR-presented screen 600 that provides a mechanism by which a parent cansupply a password, according to an embodiment. In the exampleillustrated, the parent uses the DVR remote control to enter afour-digit password. Any time that the DVR has been placed in the kidszone operational mode, the parent enters a password when the parentwishes to place the DVR into an operational mode other than the kidszone. The secrecy of the password prevents children from exiting thekids zone and from changing the settings thereof.

Although the example illustrated is described with reference to afour-digit password, other embodiments may ask for and use, instead,passwords of other lengths and compositions. For example, the passwordmight be any number of digits and/or alphanumeric characters. In anotherexample, the password might be formed by the pressing of parent-selectedbuttons on the DVR remote control in a parent-selected sequence. Inanother embodiment, a technique for authenticating to DVR 102 forentering into and out of kids zone operational mode may include othertypes of technologies that are appropriately configured. For examplesuch other types of technologies may include smartcard, voicerecognition, or fingerprint technologies. For instance, instead ofentering a four-digit password, a user may slide a smartcard into a slotin front of the DVR. It should be appreciated that such implementationsare meant by way of example only and are not meant to be limiting.

In an embodiment, after the parent has supplied to DVR 102 an age rangeand a password for the kids zone, a kids zone is established. DVR 102maps the restriction criteria to the kids zone and stores the mapping.However, at this point, DVR 102 may not be placed into the kids zoneoperational mode. FIG. 7 illustrates an example of a DVR-presentedscreen 700 that explains that the kids zone has been established,according to an embodiment. The illustrated screen explains that thekids zone has been established and instructs the parent on how to placethe DVR into the newly established kids zone operational mode. Theillustrated screen informs the parent that the DVR may be placed intothe kids zone operational mode via selection of a particular menu itemin the “now playing” list (which is accessible via selection of acertain menu item on a main menu). The illustrated screen also informsthe parent that the kids zone settings (such as which content DVR 102can present while the DVR is in the kids zone operational mode) can bemodified by following a specified procedure.

Additionally, in an embodiment, the screen 700 explains that the DVRwill automatically place itself back into the kids zone operational modeafter a specified period of time (in this example, four hours) haspassed during which the DVR's controls have not been used (either viathe DVR remote or the DVR's on-surface console). In an embodiment, this“auto-relock” feature may be disabled by following a specified process.

In an embodiment, after the kids zone has been established and createdon DVR 102 as described above, a menu item, the selection of whichcauses DVR 102 to place itself into the kids zone operational mode,appears in the DVR's general “now playing” list. FIG. 8 illustrates anexample of a DVR-presented screen that includes a menu item theselection of which causes the DVR to enter the kids zone operationalmode, according to an embodiment. The screen illustrated in FIG. 8 showsthe titles of content (e.g., television video programs) that DVR 102 hasobtained and stored (e.g., by recording the content as the content wasbroadcast, or by downloading the content over network 105) for laterpresentation. Above such titles, the illustrated screen 800 shows a“Kids Zone” menu item 801. A user's selection of this menu item causesDVR 102 to place itself into the kids zone operational mode. Once DVR102 has been placed into the kids zone operational mode, the contentthat DVR 102 may present, which may include some of the content that DVR102 has already obtained and stored, may become unavailable forpresentation until DVR 102 has been placed back into the general,unrestricted operational mode, or unless the previously establishedpassword is supplied to override, temporarily, the restrictions imposedin the kids zone.

FIG. 9 illustrates an example of a DVR-presented screen 900 that showsonly content items that are allowed by the restriction criteria that areassociated with the kids zone 902, according to an embodiment. Incontrast to the general “now playing” list of FIG. 8, the “kids zone nowplaying” list 900 of FIG. 9 omits, from the list, all of the contentitems, the attributes and characteristics (e.g., title, rating,category, channel or URL from which obtained, etc.) of which fail tosatisfy the restriction criteria that are associated with the kids zone.For example, although content items such as “Bob the Builder,” “Thomas &Friends,” “DragonTales,” and “Caillou” remain in the “kids zone nowplaying” list of FIG. 9, other content items such as “CSI: New York,”“The Simpsons,” and “South Park,” which appeared in the general “nowplaying” list of FIG. 8, are not shown in the “kids zone now playing”list. The latter content items are omitted from the “kids now playing”list because, for whatever reason, they do not satisfy the restrictioncriteria that are associated with the kids zone. These latter contentitems are still stored on DVR 102, but, in an embodiment, they are notaccessible from DVR 102 while DVR 102 is in the kids zone operationalmode.

The example screen shown in FIG. 9 also includes an “Exit Kids Zone”menu item 901 and an “add shows to kids zone” menu item. In anembodiment, user selection of the “exit kids zone” menu item 901 causesDVR 102 to prompt the DVR's user for the previously establishedpassword. Submission of the correct password in response to the promptcauses DVR 102 to exit the kids zone and place itself into the general,unrestricted operational mode, at least temporarily. Similarly, in anembodiment, user selection of the “add shows to kids zone” menu item 903also causes DVR 102 to prompt the DVR's user for the previouslyestablished password. Submission of the correct password in response tothe prompt causes DVR 102 to initiate a process through which the DVR'suser can modify the restriction criteria that are associated with thekids zone. In an embodiment, submission of an incorrect password inresponse to a prompt does not allow exit from or alteration of the kidszone.

Entered Password Real-Time Reporting Process

In an embodiment, submission of the correct password causes a clientsystem (e.g., DVR 102) to initiate a process for notifying or reportingto a user in real-time that the correct password has been entered.Referring to FIG. 10, a flow diagram of a password detecting andreporting process according to an embodiment, a viewer enters a passwordand exits a first operation mode (e.g., kids zone) on a client system(Step 1002). Upon detecting that the correct password has been submitted(Step 1004), the client system sends an instant message in real-time toa user (e.g., a parent) to notify the user that the password has beenentered (Step 1006). It should be appreciated that the viewer mayperform any activity for which the client system is configured to detectand that the activity is not limited to entering a password. It shouldbe appreciated that the client system may be configured to detect anytype of change, such as switching from a first operational mode into asecond operational mode. For example, DVR 102 may be configured todetect exiting out of kids zone and into standard operation mode. Itshould be appreciated that the client system may send an instant messagein real-time to another client system (e.g., a second DVR), a personalcomputer, a portable device, or to a server. For example, DVR 102 maysend an instant message in real-time to a parent viewing a video programon a second DVR which is configured to display a notification message inresponse to receiving the instant message. In another example, DVR 102may send an instant message in real-time to a parent's cellular phonethat is configured to receive the instant message and alert the parent(e.g., by making a sound or vibrating) that the password has beenentered. It should be appreciated that such illustrations are by way ofexample only and are not meant to be limiting.

In an embodiment and referring to FIG. 11, a flow diagram of a passworddetecting and reporting process according to an embodiment, a viewerenters a password and exits a first operation mode (e.g., kids zone) ona client system (Step 1002). Upon detecting that the correct passwordhas been submitted (Step 1004), the client system sends an instantmessage in real-time to a module residing on a server (Step 1102).Real-time DVR usage and reporting module 410 is an example of suchserver. The module residing on the server sends a message in real-timeto a user (e.g., a parent) to notify the user that the password has beenentered (Step 1104). It should be appreciated that the viewer mayperform any activity for which the client system is configured to detectand that the activity is not limited to entering a password. It shouldbe appreciated that the client system may be configured to detect anytype of change, such as switching from a first operation mode into asecond operational mode. For example, DVR 102 may be configured todetect exiting out of kids zone and into standard operation mode. Itshould be appreciated that the module on the server may send an instantmessage in real-time to another client system (e.g., a second DVR), apersonal computer, a portable device, or to a server. For example,real-time DVR usage and reporting module 410 may send an instant messagein real-time to a parent viewing a video program on a second DVR whichis configured to display a notification message in response to receivingthe instant message. In another example, real-time DVR usage andreporting module 410 may send an instant message in real-time to aparent's cellular phone that is configured to receive the instantmessage and alert the parent (e.g., by making a sound or vibrating) thatthe password has been entered. It should be appreciated that suchillustrations are by way of example only and are not meant to belimiting.

An Example—R-Rated Video Program Playing Detection in Real-Time

Many of the households in which DVRs are used also are those in whichchildren are present. Parents who own DVRs might not want their childrento watch certain televised content due to the violent or mature natureof that content, among other possible reasons. However, such parentsmight also want their DVRs to record such content for the parents aloneto watch in privacy, despite the parents' desire to prevent theirchildren from viewing such content. Thus, in some cases, a DVR mighthave, stored thereon, content that the parents wanted the DVR to record,but which the parents do not want their children to view.

Several schemes have been devised for preventing children from viewingselected televised content. One such scheme involves the “V-chip”technology. The V-chip allows parents to block certain kinds oftelevision programming that the parents don't want their children towatch. Most television programs are now assigned a rating according to asystem established by the broadcasting industry. The rating is encodedwith the program so that, using the remote control, parents can programthe V-chip to prevent a television from displaying programs that areassociated with certain ratings.

In 1996, The U.S. Congress asked the broadcasting industry to establisha voluntary ratings system for TV programs. The industry did so bycreating the ratings system known as “TV Parental Guidelines.” Thissystem was established by the National Association of Broadcasters, theNational Cable Television Association, and the Motion PictureAssociation of America (MPAA). Ratings established under this systemappear in the corner of a television screen during the first 15 secondsof each program. The ratings are also included in many magazines andnewspapers that provide TV listings. Ratings are given to all televisionprogramming except news, sports, and unedited movies on premium cablechannels. Under this system, there are six possible ratings. TV-Y (AllChildren), found only in children's shows, means that the show isappropriate for all children. TV-7 (Directed to Older Children), foundonly in children's shows, means that the show is most appropriate forchildren age 7 and up. TV-G (General Audience) means that the show issuitable for all ages but is not necessarily a children's show. TV-PG(Parental Guidance Suggested) means that parental guidance is suggestedand that the show may be unsuitable for younger children. This ratingmay also include a V for violence, an S for sexual situations, an L forlanguage, and/or a D for suggestive dialogue. TV-14 (Parents StronglyCautioned) means that the show may be unsuitable for children under 14.A letter such as V, S, L, or D may accompany a rating of TV-14. TV-MA(Mature Audience Only) means that the show is for mature audiences onlyand may be unsuitable for children under 17. A letter such as V, S, L,or D may accompany a rating of TV-MA. Similarly, ratings given to moviesby the MPAA include G-rating for general audiences, PG-rating forparental guidance suggested, PG-13 for parents strongly cautioned,R-rating for restricted (children under 17 years old require anaccompanying parent or adult guardian), and NC-17 for no one under 17years old is admitted.

In an embodiment, DVR 102 provides an interface to a DVR-presentedElectronic Program Guide (EPG). An example EPG screen 1200 through whicha viewer may browse is shown in FIG. 12. An example of an EPG isdescribed in U.S. Pat. No. 6,642,939 entitled “MULTIMEDIA SCHEDULEPRESENTATION SYSTEM”, owned by the Applicant and incorporated byreference herein in its entirety. For example, in response to a viewer'sselection (e.g., using the DVR remote control) of a content item that isidentified in the EPG, DVR 102 presents a screen that shows detailedinformation about the selected content item. The detailed informationmay include the content item's title, a description of the contentitem's subject matter (e.g., plot), the year in which the content itemwas produced, the content item's rating, third-party reviews of thecontent item, etc.

An embodiment may be described with reference to FIG. 13, a flow diagramof a rating-detecting and reporting process, and FIG. 12. In anembodiment, a viewer begins viewing content or the DVR, perhapspreviously programmed, begins playing content (Step 1302), e.g., chosenfrom the R-rated program, Brimstone, on screen 1200, on a client system(e.g., DVR 102). The client system detects that the rating is R (Step1304). The client system sends an instant message in real-time to a user(e.g., a parent) to notify the user that an R-rated video movie isplaying on the client system (Step 1306). It should be appreciated thatthe viewer may perform any activity for which the client system isconfigured to detect and that the activity is not limited to viewingparticular content. It should be appreciated that the client system maybe configured to detect any type of activity, such as, for example,playing a video program, video movie, or music, of any rating. As well,the client system may be configured to detect any other program guideinformation related to the media content being played. For example, DVR102 may be configured to detect a viewer watching a TV-14-rated videoprogram. It should be appreciated that the client system may send aninstant message in real-time to another client system (e.g., a secondDVR), a personal computer, a portable device, or to a server. Forexample, DVR 102 may send an instant message in real-time to a parentviewing a video program on a second DVR which is configured to display anotification message in response to receiving the instant message. Inanother example, DVR 102 may send an instant message in real-time to aparent's cellular phone that is configured to receive the instantmessage and alert the parent (e.g., by making a sound or vibrating) thatthe viewer is watching a particular content, such as a TV-14-rated videoprogram. It should be appreciated that such illustrations are by way ofexample only and are not meant to be limiting.

An embodiment may be described with reference to FIG. 14, a flow diagramof a rating-detecting and reporting process, and FIG. 12. In anembodiment, a viewer begins viewing content or the DVR, perhapspreviously programmed, begins playing content (Step 1302), e.g., chosenfrom the R-rated program, Brimstone, on screen 1200, on a client system(e.g., DVR 102). The client system detects that the rating is R (Step1304). The client system sends an instant message in real-time to amodule on a server (Step 1402). Real-time DVR usage and reporting module410 is an example of such server. Real-time DVR usage and reportingmodule 410 may perform post-processing in response to receiving theinstant message indicating that the client system detects that therating is R. Optionally, the module on the server sends a message inreal-time to the user to notify the user that an R-rated video programis playing on the client system (Step 1404). It should be appreciatedthat the client system may execute any activity for which the clientsystem is configured to detect and that the activity is not limited to aviewer viewing particular content. It should be appreciated that anactivity can be performed without any viewer present and for which theclient system is configured to detect. For example, DVR 102 may beconfigured to detect playing a TV-14-rated video program. It should beappreciated that the server may send an instant message in real-time toanother client system (e.g., a second DVR), a personal computer, aportable device, to a server, or may perform any other post-processing.For example, real-time DVR usage and reporting module 410 may send aninstant message in real-time to a parent viewing a video program on asecond DVR which is configured to display a notification message inresponse to receiving the instant message. In another example, real-timeDVR usage and reporting module 410 may send an instant message inreal-time to a parent's cellular phone that is configured to receive theinstant message and alert the parent (e.g., by making a sound orvibrating) that viewer is watching an R-rated video movie. In anotherexample, real-time DVR usage and reporting module 410 may only make anentry in a log file, where the entry is associated with the activitybeing performed on DVR 102. It should be appreciated that suchillustrations are by way of example only and are not meant to belimiting.

Hardware Overview

FIG. 15 is a block diagram that illustrates a computer system 1500 uponwhich an embodiment may be implemented. Computer system 1500 includes abus 1502 or other communication mechanism for communicating information,and a processor 1504 coupled with bus 1502 for processing information.Computer system 1500 also includes a main memory 1506, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 1502for storing information and instructions to be executed by processor1504. Main memory 1506 also may be used for storing temporary variablesor other intermediate information during execution of instructions to beexecuted by processor 1504. Computer system 1500 further includes a readonly memory (ROM) 1508 or other static storage device coupled to bus1502 for storing static information and instructions for processor 1504.A storage device 1510, such as a magnetic disk or optical disk, isprovided and coupled to bus 1502 for storing information andinstructions.

Computer system 1500 may be coupled via bus 1502 to a display 1512, suchas a cathode ray tube (CRT), for displaying information to a computeruser. An input device 1514, including alphanumeric and other keys, iscoupled to bus 1502 for communicating information and command selectionsto processor 1504. Another type of user input device is cursor control1516, such as a mouse, a trackball, or cursor direction keys forcommunicating direction information and command selections to processor1504 and for controlling cursor movement on display 1512. This inputdevice typically has two degrees of freedom in two axes, a first axis(e.g., x) and a second axis (e.g., y), that allows the device to specifypositions in a plane.

The invention is related to the use of computer system 1500 forreal-time DVR usage detecting and reporting. According to oneembodiment, real-time DVR usage detecting and reporting is provided bycomputer system 1500 in response to processor 1504 executing one or moresequences of one or more instructions contained in main memory 1506.Such instructions may be read into main memory 1506 from anothercomputer-readable medium, such as storage device 1510. Execution of thesequences of instructions contained in main memory 1506 causes processor1504 to perform the process steps described herein. One or moreprocessors in a multi-processing arrangement may also be employed toexecute the sequences of instructions contained in main memory 1506. Inalternative embodiments, hard-wired circuitry may be used in place of orin combination with software instructions to implement the invention.Thus, embodiments are not limited to any specific combination ofhardware circuitry and software.

The term “computer-readable medium” as used herein refers to any mediumthat participates in providing instructions to processor 1504 forexecution. Such a medium may take many forms, including but not limitedto, non-volatile media, volatile media, and transmission media.Non-volatile media includes, for example, optical or magnetic disks,such as storage device 1510. Volatile media includes dynamic memory,such as main memory 1506. Transmission media includes coaxial cables,copper wire and fiber optics, including the wires that comprise bus1502. Transmission media can also take the form of acoustic or lightwaves, such as those generated during radio wave and infrared datacommunications.

Common forms of computer-readable media include, for example, a floppydisk, a flexible disk, hard disk, magnetic tape, or any other magneticmedium, a CD-ROM, any other optical medium, punch cards, paper tape, anyother physical medium with patterns of holes, a RAM, a PROM, and EPROM,a FLASH-EPROM, any other memory chip or cartridge, a carrier wave asdescribed hereinafter, or any other medium from which a computer canread.

Various forms of computer readable media may be involved in carrying oneor more sequences of one or more instructions to processor 1504 forexecution. For example, the instructions may initially be carried on amagnetic disk of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 1500 canreceive the data on the telephone line and use an infrared transmitterto convert the data to an infrared signal. An infrared detector coupledto bus 1502 can receive the data carried in the infrared signal andplace the data on bus 1502. Bus 1502 carries the data to main memory1506, from which processor 1504 retrieves and executes the instructions.The instructions received by main memory 1506 may optionally be storedon storage device 1510 either before or after execution by processor1504.

Computer system 1500 also includes a communication interface 1518coupled to bus 1502. Communication interface 1518 provides a two-waydata communication coupling to a network link 1520 that is connected toa local network 1522. For example, communication interface 1518 may bean integrated services digital network (ISDN) card or a modem to providea data communication connection to a corresponding type of telephoneline. As another example, communication interface 1518 may be a localarea network (LAN) card to provide a data communication connection to acompatible LAN. Wireless links may also be implemented. In any suchimplementation, communication interface 1518 sends and receiveselectrical, electromagnetic or optical signals that carry digital datastreams representing various types of information.

Network link 1520 typically provides data communication through one ormore networks to other data devices. For example, network link 1520 mayprovide a connection through local network 1522 to a host computer 1524or to data equipment operated by an Internet Service Provider (ISP)1526. ISP 1526 in turn provides data communication services through theworldwide packet data communication network now commonly referred to asthe “Internet” 1528. Local network 1522 and Internet 1528 both useelectrical, electromagnetic or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 1520 and through communication interface 1518, which carrythe digital data to and from computer system 1500, are exemplary formsof carrier waves transporting the information.

Computer system 1500 can send messages and receive data, includingprogram code, through the network(s), network link 1520 andcommunication interface 1518. In the Internet example, a server 1530might transmit a requested code for an application program throughInternet 1528, ISP 1526, local network 1522 and communication interface1518. In accordance with the invention, one such downloaded applicationprovides for real-time DVR usage detecting and reporting as describedherein.

The received code may be executed by processor 1504 as it is received,and/or stored in storage device 1510, or other non-volatile storage forlater execution. In this manner, computer system 1500 may obtainapplication code in the form of a carrier wave.

In the foregoing specification, the invention has been described withreference to specific embodiments thereof. It will, however, be evidentthat various modifications and changes may be made thereto withoutdeparting from the broader spirit and scope of the invention. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

What is claimed is:
 1. A method, comprising: receiving, by a server, amessage from a client requesting a recording event for a user device,the client being different than the user device; responsive to themessage, updating, by the server, a database at the server to includeone or more database entries that indicate that the user device is toperform the recording event; sending, by the server, in one or moreinstant messages to the user device, a request to initiatesynchronization of the one or more database entries between the databaseat the server and a local database at the user device; wherein the userdevice is configured to receive program guide data describing listingsof programs; transmitting, by the server, information from the one ormore database entries to the user device, the information, when storedin the local database at the user device, instructing the user device toperform the recording event; wherein the recording event causes the userdevice to schedule a recording of a data stream comprising a programindicated by the message from the client, the program guide dataincluding a program description for the program; wherein the method isperformed by one or more computing devices.
 2. The method of claim 1,wherein the user device is a digital media recorder.
 3. The method ofclaim 1, further comprising: sending, from the server, to the userdevice, the program guide data.
 4. The method of claim 1, furthercomprising: receiving, by the server, a request from the user device toestablish a connection over which to perform the synchronization, inresponse to the user device receiving the one or more instant messagesfrom the server.
 5. The method of claim 1, further comprising:establishing, by the server, a connection to the user device, whereinthe transmitting is performed over the connection and the serverestablishes the connection to the user device prior to receiving themessage from the client.
 6. The method of claim 1, wherein the serversends the one or more instant messages over an instant messageconnection to the user device and further comprising: detecting, by theserver, that the instant message connection to the user device hasdropped and in response automatically reestablishing the instant messageconnection.
 7. The method of claim 1, further comprising the serverperiodically transferring content from the database to the user device.8. The method of claim 1, wherein the one or more instant messagesconform to an Extensible Messaging and Presence Protocol.
 9. Anon-transitory computer readable medium storing one or more instructionswhich, when executed by one or more processors, cause the one or moreprocessors to perform steps comprising: receiving, by a server, amessage from a client requesting a recording event for a user device,the client being different than the user device; responsive to themessage, updating, by the server, a database at the server to includeone or more database entries that indicate that the user device is toperform the recording event; sending, by the server, in one or moreinstant messages to the user device, a request to initiatesynchronization of the one or more database entries between the databaseat the server and a local database at the user device; wherein the userdevice is configured to receive program guide data describing listingsof programs; transmitting, by the server, information from the one ormore database entries to the user device, the information, when storedin the local database at the user device, instructing the user device toperform the recording event; wherein the recording event causes the userdevice to schedule a recording of a data stream comprising a programindicated by the message from the client, the program guide dataincluding a program description for the program.
 10. The non-transitorycomputer-readable medium of claim 9, wherein the user device is adigital media recorder.
 11. The non-transitory computer-readable mediumof claim 9, wherein the steps further comprise: sending, from theserver, to the user device, the program guide data.
 12. Thenon-transitory computer-readable medium of claim 9, wherein the stepsfurther comprise: receiving, by the server, a request from the userdevice to establish a connection over which to perform thesynchronization, in response to the user device receiving the one ormore instant messages from the server.
 13. The non-transitorycomputer-readable medium of claim 9, wherein the steps further comprise:establishing, by the server, a connection to the user device, whereinthe transmitting is performed over the connection and the serverestablishes the connection to the user device prior to receiving themessage from the client.
 14. The non-transitory computer-readable mediumof claim 9, wherein the server sends the one or more instant messagesover an instant message connection to the user device and the stepsfurther comprise: detecting, by the server, that the instant messageconnection to the user device has dropped and in response automaticallyreestablishing the instant message connection.
 15. The non-transitorycomputer-readable medium of claim 9, the steps further comprising theserver periodically transferring content from the database to the userdevice.
 16. The non-transitory computer-readable medium of claim 9,wherein the one or more instant messages conform to an ExtensibleMessaging and Presence Protocol.
 17. An apparatus comprising: areceiving subsystem, implemented at least partially in hardware, forreceiving, by a server, a message from a client requesting a recordingevent for a user device, the client being different than the userdevice; an updating subsystem, implemented at least partially inhardware, for responsive to the message, updating, by the server, adatabase at the server to include one or more database entries thatindicate that the user device is to perform the recording event; asending subsystem, implemented at least partially in hardware, forsending, by the server, in one or more instant messages to the userdevice, a request to initiate synchronization of the one or moredatabase entries between the database at the server and a local databaseat the user device; wherein the user device is configured to receiveprogram guide data describing listings of programs; a transmittingsubsystem, implemented at least partially in hardware, for transmitting,by the server, information from the one or more database entries to theuser device, the information, when stored in the local database at theuser device, instructing the user device to perform the recording event;wherein the recording event causes the user device to schedule arecording of a data stream comprising a program indicated by the messagefrom the client, the program guide data including a program descriptionfor the program.
 18. The apparatus of claim 17, wherein the user deviceis a digital media recorder.
 19. The apparatus of claim 17, wherein thetransmitting subsystem is further configured to send, from the server,to the user device, the program guide data.
 20. The apparatus of claim17, further comprising: a second receiving subsystem, implemented atleast partially in hardware, for receiving, by the server, a requestfrom the user device to establish a connection over which to perform thesynchronization, in response to the user device receiving the one ormore instant messages from the server.
 21. The apparatus of claim 17,further comprising: an establishing subsystem, implemented at leastpartially in hardware, for establishing, by the server, a connection tothe user device, wherein the transmitting is performed over theconnection and the server establishes the connection to the user deviceprior to receiving the message from the client.
 22. The apparatus ofclaim 17, wherein the sending subsystem is configured to send the one ormore instant messages over an instant message connection to the userdevice and further comprising: a detecting subsystem, implemented atleast partially in hardware, for detecting, by the server, that theinstant message connection to the user device has dropped and inresponse automatically reestablishing the instant message connection.23. The apparatus of claim 17, wherein the transmitting subsystem isfurther configured to periodically transfer content from the database tothe user device.
 24. The apparatus of claim 17, wherein the one or moreinstant messages conform to an Extensible Messaging and PresenceProtocol.